#include <iostream>
#include <vector>  //vector的头文件
using namespace std;

/*
	迭代器有三种常见类型：
	    读写迭代器：既能访问，也可以修改容器中的数据
		            begin()和end()
		只读迭代器：只能访问容器中的数据，不能修改容器中的数据
		            cbegin()和cend()
		逆迭代器(反向迭代器)：从尾到头遍历，能访问也能修改容器中的数据
		            rbegin()和rend()        
		只读逆迭代器：从尾到头遍历，能访问，但是不能修改容器中的数据
		            crbegin()和crend()
*/

int main()
{
	int i;
	//创建vector对象
	vector<int> v1; //专门存放整数的容器对象
	
	//往容器里面存放数据
	v1.push_back(12);
	v1.push_back(13);
	v1.push_back(14);
	v1.push_back(15);
	
	//第一种：读写迭代器
	// auto it=v1.begin(); 
	// for(; it!=v1.end(); it++)
	// {
		//访问容器中的数据
		// cout<<"容器中数据是: "<<*it<<endl;
		//修改容器中的数据
		// *it+=10;
	// }
	
	//第二种：只读迭代器
	// auto it=v1.cbegin(); 
	// for(; it!=v1.cend(); it++)
	// {
		//访问容器中的数据
		// cout<<"容器中数据是: "<<*it<<endl;
		//不能修改容器中的数据
		//*it+=10;
	// }
	
	//第三种：逆迭代器
	auto it=v1.rbegin(); //指向末尾位置 
	for(; it!=v1.rend(); it++) 
	{
		//访问容器中的数据
		cout<<"容器中数据是: "<<*it<<endl;
		//能修改容器中的数据
		*it+=10;
	}
	
	for(auto x:v1)
		cout<<"修改之后容器中的元素: "<<x<<endl;
	
}